import java.util.*;


class MinStack {
    public  Stack<Integer> stack;
    public   Stack<Integer> minStack;

    public MinStack() {
            stack=new Stack<>();
            minStack=new Stack<>();

    }
    
    public void push(int val) {
        stack.push(val);
        if(minStack.empty()){
            minStack.push(val);
        }
       else{
           if(val<=minStack.peek()){
               minStack.push(val);
           }
       }

    }
    
    public void pop() {
        if(!stack.empty()){
        Integer val=  stack.pop();
        

        if(val.equals(minStack.peek())){
            minStack.pop();
        }

    }
    }
    
    public int top() {
        if(!stack.empty()){
             return stack.peek();
        }
       
        return -1;
    }
    
    public int getMin() {
      return minStack.peek();

    }
}